<template>
  <div class="dashboard-container">
    <div class="app-container">
      <el-card>
        <!-- 导入 xlsx / xls -->
        <h2>员工导入</h2>
        <el-alert
          title="每次导入仅可添加1000名员工，姓名、手机、入职时间、聘用形式为必填项"
          type="warning"
          show-icon
        />
        <!-- on-success： 文件上传成功时的钩子 -->
        <UploadExcel :on-success="success" />
      </el-card>
    </div>
  </div>
</template>

<script>
import { importEmployee } from '@/api/employees'
export default {
  // 组件名称
  name: 'ImportEmployee',
  // 局部注册的组件
  components: {},
  // 组件参数 接收来自父组件的数据
  props: {},
  // 组件状态值
  data () {
    return {

    }
  },
  // 计算属性
  computed: {},
  // 侦听器
  watch: {},
  // 生命周期钩子   注：没用到的钩子请自行删除
  created () { },
  mounted () { },
  // 组件方法
  methods: {
    async success ({ header, results }) {
      // header表头, ['手机号', '姓名', '入职日期', '转正日期', '工号']
      //  results表数据
      // 如果是导入员工 将中文 => 英文
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      // 方案一:
      // var arr = []
      // results.forEach(item => {
      //   // bject.keys(item) ['手机号', '姓名', '入职日期', '转正日期', '工号']
      //   var userInFo = {}
      //   Object.keys(item).forEach(key => {
      //     // 将Object[key] 转换为英文 同时赋值
      //     userInFo[userRelations[key]] = item[key]
      //   })
      //   arr.push(userInFo)
      // })

      // 方案二:
      var arr = results.map(item => {
        var userInFo = {}
        Object.keys(item).forEach(key => {
          if (userRelations[key] === 'timeOfEntry' || userRelations[key] === 'correctionTime') {
            userInFo[userRelations[key]] = new Date(this.formatDate(item[key], '/')) // 只有这样, 才能入库
            return
          }
          // 将Object[key] 转换为英文 同时赋值
          userInFo[userRelations[key]] = item[key]
        })
        return userInFo
      })
      // 注: 手机号具有唯一性
      await importEmployee(arr)
      this.$message.success('导入excel成功')
      this.$router.back() // 调回上一个页面
    },
    formatDate (numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + month + format + date
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

<style scoped lang="scss">
.app-container {
  h2 {
    text-align: center;
  }
}
</style>
